/**
 * @author Roger Wu 
 * @version 1.0
 */
(function($){
    $.fn.cssv = function(pre){
        var cssPre = $(this).css(pre);
        return cssPre.substring(0, cssPre.indexOf("px")) * 1;
    };
    $.fn.jBar = function(options){
        var op = $.extend({container:"#container", collapse:".collapse", toggleBut:".toggleCollapse div", sideBar:"#sidebar", sideBar2:"#sidebar_s", splitBar:"#splitBar", splitBar2:"#splitBarProxy"}, options);
        return this.each(function(){
            var jbar = this;
            var sbar = $(op.sideBar2, jbar);
            var bar = $(op.sideBar, jbar);
            $(op.toggleBut, bar).click(function(){
                DWZ.ui.sbar = false;
                $(op.splitBar).hide();
                var sbarwidth = sbar.cssv("left") + sbar.outerWidth();
                var barleft = sbarwidth - bar.outerWidth();
                var cleft = $(op.container).cssv("left") - (bar.outerWidth() - sbar.outerWidth());
                var cwidth = bar.outerWidth() - sbar.outerWidth() + $(op.container).outerWidth();
                $(op.container).animate({left: cleft,width: cwidth},50,function(){
                    bar.animate({left: barleft}, 500, function(){
                        bar.hide();
                        sbar.show().css("left", -50).animate({left: 5}, 200);
                        $(window).trigger(DWZ.eventType.resizeGrid);
                    });
                });
                $(op.collapse,sbar).click(function(){
                    var sbarwidth = sbar.cssv("left") + sbar.outerWidth();
                    if(bar.is(":hidden")) {
                        $(op.toggleBut, bar).hide();
                        bar.show().animate({left: sbarwidth}, 500);
                        $(op.container).click(_hideBar);
                    } else {
                        bar.animate({left: barleft}, 500, function(){
                            bar.hide();
                        });
                    }
                    function _hideBar() {
                        $(op.container).unbind("click", _hideBar);
                        if (!DWZ.ui.sbar) {
                            bar.animate({left: barleft}, 500, function(){
                                bar.hide();
                            });
                        }
                    }
                    return false;
                });
                return false;
            });
            $(op.toggleBut, sbar).click(function(){
                DWZ.ui.sbar = true;
                sbar.animate({left: -25}, 200, function(){                
                    bar.show();
                });
                bar.animate({left: 5}, 800, function(){
                    $(op.splitBar).show();
                    $(op.toggleBut, bar).show();                    
                    var cleft = 5 + bar.outerWidth() + $(op.splitBar).outerWidth();
                    var cwidth = $(op.container).outerWidth() - (cleft - $(op.container).cssv("left"));
                    $(op.container).css({left: cleft,width: cwidth});
                    $(op.collapse, sbar).unbind('click');
                    $(window).trigger(DWZ.eventType.resizeGrid);
                });
                return false;
            });
            $(op.splitBar).mousedown(function(event){
                $(op.splitBar2).each(function(){
                    var spbar2 = $(this);
                    setTimeout(function(){spbar2.show();}, 100);
                    spbar2.css({visibility: "visible",left: $(op.splitBar).css("left")});                    
                    spbar2.jDrag($.extend(options, {obj:$("#sidebar"), move:"horizontal", event:event,stop: function(){
                        $(this).css("visibility", "hidden");
                        var move = $(this).cssv("left") - $(op.splitBar).cssv("left");
                        var sbarwidth = bar.outerWidth() + move;
                        var cleft = $(op.container).cssv("left") + move;
                        var cwidth = $(op.container).outerWidth() - move;
                        bar.css("width", sbarwidth);
                        $(op.splitBar).css("left", $(this).css("left"));
                        $(op.container).css({left: cleft,width: cwidth});

                    }}));
                    return false;                    
                });
            });
        });
    }
})(jQuery);
